using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._AviationTools._Airports._Analysis
{
    /// <summary>
    /// <para>Generate OIS Obstacle Data</para>
    /// <para>Generates a JSON string that is stored in the OBSTACLEJSON field on the input Obstruction Identification Surface (OIS) multipatch feature class that contains the data necessary to depict obstacles to safety of flight within the approach surfaces (in the form of points, lines, or polygons) in the Terrain and Obstacle Profile layout element.</para>
    /// <para>生成一个 JSON 字符串，该字符串存储在输入障碍物识别面 （OIS） 多面体要素类的 OBSTACLEJSON 字段中，该要素类包含描述地形和障碍物剖面布局元素中进近曲面（以点、线或面的形式）内飞行安全障碍物所需的数据。</para>
    /// </summary>    
    [DisplayName("Generate OIS Obstacle Data")]
    public class GenerateOISObstacleData : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GenerateOISObstacleData()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_runway_features">
        /// <para>Input Runway Features</para>
        /// <para>The input runway dataset. The feature class must be z-enabled and contain polylines.</para>
        /// <para>输入跑道数据集。要素类必须启用 z 并包含折线。</para>
        /// </param>
        /// <param name="_in_obstacle_features">
        /// <para>Input Obstacle Features</para>
        /// <para>The input obstacle features that will be analyzed. The feature class must be z-enabled.</para>
        /// <para>将要分析的输入障碍物特征。要素类必须启用 z 功能。</para>
        /// </param>
        /// <param name="_target_ois_features">
        /// <para>Target OIS Features</para>
        /// <para>The multipatch features with defined airport data model schema. The feature class must be z-enabled.</para>
        /// <para>具有定义的机场数据模型架构的多面体功能。要素类必须启用 z 功能。</para>
        /// </param>
        public GenerateOISObstacleData(object _in_runway_features, object _in_obstacle_features, object _target_ois_features)
        {
            this._in_runway_features = _in_runway_features;
            this._in_obstacle_features = _in_obstacle_features;
            this._target_ois_features = _target_ois_features;
        }
        public override string ToolboxName => "Aviation Tools";

        public override string ToolName => "Generate OIS Obstacle Data";

        public override string CallName => "aviation.GenerateOISObstacleData";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_runway_features, _in_dems, _in_obstacle_features, _target_ois_features, _obstacle_height_field.GetGPValue(), _obstacle_height_unit.GetGPValue(), _in_flightpath_features, _out_ois_features, _label_field, _height_option.GetGPValue(), _elevation_option.GetGPValue(), _elevation_field, _elevation_field_unit.GetGPValue()];

        /// <summary>
        /// <para>Input Runway Features</para>
        /// <para>The input runway dataset. The feature class must be z-enabled and contain polylines.</para>
        /// <para>输入跑道数据集。要素类必须启用 z 并包含折线。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Runway Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_runway_features { get; set; }


        /// <summary>
        /// <para>Input Elevation Model</para>
        /// <para>The DEMs covering the obstacles, used to derive base elevation values. This parameter is used if Elevation Source is set to Elevation DEM.</para>
        /// <para>覆盖障碍物的 DEM，用于导出基本高程值。如果“高程源”设置为“高程 DEM”，则使用此参数。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Elevation Model")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _in_dems { get; set; } = null;


        /// <summary>
        /// <para>Input Obstacle Features</para>
        /// <para>The input obstacle features that will be analyzed. The feature class must be z-enabled.</para>
        /// <para>将要分析的输入障碍物特征。要素类必须启用 z 功能。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Obstacle Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_obstacle_features { get; set; }


        /// <summary>
        /// <para>Target OIS Features</para>
        /// <para>The multipatch features with defined airport data model schema. The feature class must be z-enabled.</para>
        /// <para>具有定义的机场数据模型架构的多面体功能。要素类必须启用 z 功能。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target OIS Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_ois_features { get; set; }


        /// <summary>
        /// <para>Obstacle Height</para>
        /// <para><xdoc>
        ///   <para>The field containing the height of the obstacle features or the keyword FEATURE_GEOMETRY to indicate obstacle feature geometry z-coordinate values.</para>
        ///   <bulletList>
        ///     <bullet_item>Feature Geometry—The field containing the height of the obstacle features.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>包含障碍物要素高度的字段或关键字FEATURE_GEOMETRY，用于指示障碍物要素几何 z 坐标值。</para>
        ///   <bulletList>
        ///     <bullet_item>要素几何 - 包含障碍物要素高度的字段。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Obstacle Height")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _obstacle_height_field_value _obstacle_height_field { get; set; } = _obstacle_height_field_value._FEATURE_GEOMETRY;

        public enum _obstacle_height_field_value
        {
            /// <summary>
            /// <para>Feature Geometry</para>
            /// <para>Feature Geometry—The field containing the height of the obstacle features.</para>
            /// <para>要素几何 - 包含障碍物要素高度的字段。</para>
            /// </summary>
            [Description("Feature Geometry")]
            [GPEnumValue("FEATURE_GEOMETRY")]
            _FEATURE_GEOMETRY,

        }

        /// <summary>
        /// <para>Unit</para>
        /// <para><xdoc>
        ///   <para>Specifies the obstacle height unit of measure.</para>
        ///   <bulletList>
        ///     <bullet_item>Kilometers—The unit is kilometers.</bullet_item><para/>
        ///     <bullet_item>Meters—The unit is meters.</bullet_item><para/>
        ///     <bullet_item>Decimeters—The unit is decimeters.</bullet_item><para/>
        ///     <bullet_item>Centimeters—The unit is centimeters.</bullet_item><para/>
        ///     <bullet_item>Millimeters—The unit is millimeters.</bullet_item><para/>
        ///     <bullet_item>Nautical Miles—The unit is nautical miles.</bullet_item><para/>
        ///     <bullet_item>Miles—The unit is miles.</bullet_item><para/>
        ///     <bullet_item>Yards—The unit is yards.</bullet_item><para/>
        ///     <bullet_item>Feet—The unit is feet.</bullet_item><para/>
        ///     <bullet_item>Inches—The unit is inches</bullet_item><para/>
        ///     <bullet_item>Decimal Degrees—The unit is decimal degrees.</bullet_item><para/>
        ///     <bullet_item>Points—The unit is points.</bullet_item><para/>
        ///     <bullet_item>Unknown—The unit is unknown.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定障碍物高度的测量单位。</para>
        ///   <bulletList>
        ///     <bullet_item>千米 - 单位为千米。</bullet_item><para/>
        ///     <bullet_item>米 - 单位为米。</bullet_item><para/>
        ///     <bullet_item>分米 - 单位为分米。</bullet_item><para/>
        ///     <bullet_item>厘米—单位为厘米。</bullet_item><para/>
        ///     <bullet_item>毫米—单位为毫米。</bullet_item><para/>
        ///     <bullet_item>海里 - 单位为海里。</bullet_item><para/>
        ///     <bullet_item>英里—单位为英里。</bullet_item><para/>
        ///     <bullet_item>码 - 单位为码。</bullet_item><para/>
        ///     <bullet_item>英尺 - 单位为英尺。</bullet_item><para/>
        ///     <bullet_item>英寸 - 单位为英寸</bullet_item><para/>
        ///     <bullet_item>十进制度 - 单位为十进制度。</bullet_item><para/>
        ///     <bullet_item>点数 - 单位为点数。</bullet_item><para/>
        ///     <bullet_item>未知 - 单位未知。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Unit")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _obstacle_height_unit_value _obstacle_height_unit { get; set; } = _obstacle_height_unit_value._METERS;

        public enum _obstacle_height_unit_value
        {
            /// <summary>
            /// <para>Kilometers</para>
            /// <para>Kilometers—The unit is kilometers.</para>
            /// <para>千米 - 单位为千米。</para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("KILOMETERS")]
            _KILOMETERS,

            /// <summary>
            /// <para>Meters</para>
            /// <para>Meters—The unit is meters.</para>
            /// <para>米 - 单位为米。</para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("METERS")]
            _METERS,

            /// <summary>
            /// <para>Decimeters</para>
            /// <para>Decimeters—The unit is decimeters.</para>
            /// <para>分米 - 单位为分米。</para>
            /// </summary>
            [Description("Decimeters")]
            [GPEnumValue("DECIMETERS")]
            _DECIMETERS,

            /// <summary>
            /// <para>Centimeters</para>
            /// <para>Centimeters—The unit is centimeters.</para>
            /// <para>厘米—单位为厘米。</para>
            /// </summary>
            [Description("Centimeters")]
            [GPEnumValue("CENTIMETERS")]
            _CENTIMETERS,

            /// <summary>
            /// <para>Millimeters</para>
            /// <para>Millimeters—The unit is millimeters.</para>
            /// <para>毫米—单位为毫米。</para>
            /// </summary>
            [Description("Millimeters")]
            [GPEnumValue("MILLIMETERS")]
            _MILLIMETERS,

            /// <summary>
            /// <para>Nautical Miles</para>
            /// <para>Nautical Miles—The unit is nautical miles.</para>
            /// <para>海里 - 单位为海里。</para>
            /// </summary>
            [Description("Nautical Miles")]
            [GPEnumValue("NAUTICAL_MILES")]
            _NAUTICAL_MILES,

            /// <summary>
            /// <para>Miles</para>
            /// <para>Miles—The unit is miles.</para>
            /// <para>英里—单位为英里。</para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("MILES")]
            _MILES,

            /// <summary>
            /// <para>Yards</para>
            /// <para>Yards—The unit is yards.</para>
            /// <para>码 - 单位为码。</para>
            /// </summary>
            [Description("Yards")]
            [GPEnumValue("YARDS")]
            _YARDS,

            /// <summary>
            /// <para>Feet</para>
            /// <para>Feet—The unit is feet.</para>
            /// <para>英尺 - 单位为英尺。</para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("FEET")]
            _FEET,

            /// <summary>
            /// <para>Inches</para>
            /// <para>Inches—The unit is inches</para>
            /// <para>英寸 - 单位为英寸</para>
            /// </summary>
            [Description("Inches")]
            [GPEnumValue("INCHES")]
            _INCHES,

            /// <summary>
            /// <para>Decimal Degrees</para>
            /// <para>Decimal Degrees—The unit is decimal degrees.</para>
            /// <para>十进制度 - 单位为十进制度。</para>
            /// </summary>
            [Description("Decimal Degrees")]
            [GPEnumValue("DECIMAL_DEGREES")]
            _DECIMAL_DEGREES,

            /// <summary>
            /// <para>Points</para>
            /// <para>Points—The unit is points.</para>
            /// <para>点数 - 单位为点数。</para>
            /// </summary>
            [Description("Points")]
            [GPEnumValue("POINTS")]
            _POINTS,

            /// <summary>
            /// <para>Unknown</para>
            /// <para>Unknown—The unit is unknown.</para>
            /// <para>未知 - 单位未知。</para>
            /// </summary>
            [Description("Unknown")]
            [GPEnumValue("UNKNOWN")]
            _UNKNOWN,

        }

        /// <summary>
        /// <para>Input Flight Path Features</para>
        /// <para>The polyline features that define curved approaches to the specified runways. If unspecified, all input features will be processed as straight approaches.</para>
        /// <para>定义指定跑道的曲线进近的折线要素。如果未指定，则所有输入要素将作为直线方法进行处理。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Flight Path Features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _in_flightpath_features { get; set; } = null;


        /// <summary>
        /// <para>Output OIS Features</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output OIS Features")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_ois_features { get; set; }


        /// <summary>
        /// <para>Obstacle Labels</para>
        /// <para><xdoc>
        ///   <para>A field from the input obstacle feature class. When an obstacle JSON generated by this tool is later used to create a Terrain and Obstacle Profile element in a layout, the data from the selected field will be used to label the input point obstacles in that element.</para>
        ///   <para>The Obstacle Labels parameter only applies to Input Obstacle Features parameter values that contain point features.
        ///   <para>If no value is specified, the ObjectID will be applied by default.</para>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输入障碍物要素类中的字段。当此工具生成的障碍物 JSON 稍后用于在布局中创建地形和障碍物剖面图元素时，所选字段中的数据将用于标记该元素中的输入点障碍物。</para>
        /// <para>障碍物标注参数仅适用于包含点要素的输入障碍物要素参数值。
        ///   <para>如果未指定任何值，则默认情况下将应用 ObjectID。</para>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Obstacle Labels")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _label_field { get; set; } = null;


        /// <summary>
        /// <para>Obstacle Feature Height Type</para>
        /// <para><xdoc>
        ///   <para>Specifies how the tool interprets obstacle height values.</para>
        ///   <bulletList>
        ///     <bullet_item>Absolute height— Obstacle heights are measured from sea level.</bullet_item><para/>
        ///     <bullet_item>Relative height— Obstacle heights are measured from ground level. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定工具如何解释障碍物高度值。</para>
        ///   <bulletList>
        ///     <bullet_item>绝对高度 - 障碍物高度是从海平面测量的。</bullet_item><para/>
        ///     <bullet_item>相对高度 - 障碍物高度是从地面测量的。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Obstacle Feature Height Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _height_option_value _height_option { get; set; } = _height_option_value._RELATIVE_HEIGHT;

        public enum _height_option_value
        {
            /// <summary>
            /// <para>Absolute height</para>
            /// <para>Absolute height— Obstacle heights are measured from sea level.</para>
            /// <para>绝对高度 - 障碍物高度是从海平面测量的。</para>
            /// </summary>
            [Description("Absolute height")]
            [GPEnumValue("ABSOLUTE_HEIGHT")]
            _ABSOLUTE_HEIGHT,

            /// <summary>
            /// <para>Relative height</para>
            /// <para>Relative height— Obstacle heights are measured from ground level. This is the default.</para>
            /// <para>相对高度 - 障碍物高度是从地面测量的。这是默认设置。</para>
            /// </summary>
            [Description("Relative height")]
            [GPEnumValue("RELATIVE_HEIGHT")]
            _RELATIVE_HEIGHT,

        }

        /// <summary>
        /// <para>Elevation Source</para>
        /// <para><xdoc>
        ///   <para>Specifies where the tool finds the obstacle base elevation heights.</para>
        ///   <bulletList>
        ///     <bullet_item>Elevation field— Base elevation heights will be found in a numeric field of the obstacle feature class.</bullet_item><para/>
        ///     <bullet_item>Elevation DEM— Base elevation heights will be found by deriving them from one or more DEMs. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定工具查找障碍物基底高程高度的位置。</para>
        ///   <bulletList>
        ///     <bullet_item>高程字段- 基本高程高度将位于障碍物要素类的数值字段中。</bullet_item><para/>
        ///     <bullet_item>高程 DEM— 通过从一个或多个 DEM 派生基本高程高度来找到它们。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Elevation Source")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _elevation_option_value _elevation_option { get; set; } = _elevation_option_value._ELEVATION_DEM;

        public enum _elevation_option_value
        {
            /// <summary>
            /// <para>Elevation field</para>
            /// <para>Elevation field— Base elevation heights will be found in a numeric field of the obstacle feature class.</para>
            /// <para>高程字段- 基本高程高度将位于障碍物要素类的数值字段中。</para>
            /// </summary>
            [Description("Elevation field")]
            [GPEnumValue("ELEVATION_FIELD")]
            _ELEVATION_FIELD,

            /// <summary>
            /// <para>Elevation DEM</para>
            /// <para>Elevation DEM— Base elevation heights will be found by deriving them from one or more DEMs. This is the default.</para>
            /// <para>高程 DEM— 通过从一个或多个 DEM 派生基本高程高度来找到它们。这是默认设置。</para>
            /// </summary>
            [Description("Elevation DEM")]
            [GPEnumValue("ELEVATION_DEM")]
            _ELEVATION_DEM,

        }

        /// <summary>
        /// <para>Elevation Field</para>
        /// <para><xdoc>
        ///   <para>The field containing base elevation heights of the obstacle features.</para>
        ///   <para>This parameter is used if Elevation Source is set to Elevation field. The default is the first numeric field in the obstacle feature class.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>包含障碍物要素的基高程高度的字段。</para>
        ///   <para>如果“高程源”设置为“高程字段”，则使用此参数。默认值为障碍物要素类中的第一个数值字段。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Elevation Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _elevation_field { get; set; } = null;


        /// <summary>
        /// <para>Elevation Field Units</para>
        /// <para><xdoc>
        ///   <para>Specifies the linear unit of the base elevation values. This parameter is used if Elevation Source is set to Elevation field.</para>
        ///   <bulletList>
        ///     <bullet_item>Kilometers—The unit is kilometers.</bullet_item><para/>
        ///     <bullet_item>Meters—The unit is meters. This is the default.</bullet_item><para/>
        ///     <bullet_item>Decimeters—The unit is decimeters.</bullet_item><para/>
        ///     <bullet_item>Centimeters—The unit is centimeters.</bullet_item><para/>
        ///     <bullet_item>Millimeters—The unit is millimeters.</bullet_item><para/>
        ///     <bullet_item>Nautical miles—The unit is nautical miles.</bullet_item><para/>
        ///     <bullet_item>Miles—The unit is miles.</bullet_item><para/>
        ///     <bullet_item>Yards—The unit is yards.</bullet_item><para/>
        ///     <bullet_item>Feet—The unit is feet.</bullet_item><para/>
        ///     <bullet_item>Inches—The unit is inches</bullet_item><para/>
        ///     <bullet_item>Decimal degrees—The unit is decimal degrees.</bullet_item><para/>
        ///     <bullet_item>Points—The unit is points.</bullet_item><para/>
        ///     <bullet_item>Unknown—The unit is unknown.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定基本高程值的线性单位。如果“高程源”设置为“高程字段”，则使用此参数。</para>
        ///   <bulletList>
        ///     <bullet_item>千米 - 单位为千米。</bullet_item><para/>
        ///     <bullet_item>米 - 单位为米。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>分米 - 单位为分米。</bullet_item><para/>
        ///     <bullet_item>厘米—单位为厘米。</bullet_item><para/>
        ///     <bullet_item>毫米—单位为毫米。</bullet_item><para/>
        ///     <bullet_item>海里 - 单位为海里。</bullet_item><para/>
        ///     <bullet_item>英里—单位为英里。</bullet_item><para/>
        ///     <bullet_item>码 - 单位为码。</bullet_item><para/>
        ///     <bullet_item>英尺 - 单位为英尺。</bullet_item><para/>
        ///     <bullet_item>英寸 - 单位为英寸</bullet_item><para/>
        ///     <bullet_item>十进制度 - 单位为十进制度。</bullet_item><para/>
        ///     <bullet_item>点数 - 单位为点数。</bullet_item><para/>
        ///     <bullet_item>未知 - 单位未知。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Elevation Field Units")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _elevation_field_unit_value _elevation_field_unit { get; set; } = _elevation_field_unit_value._METERS;

        public enum _elevation_field_unit_value
        {
            /// <summary>
            /// <para>Kilometers</para>
            /// <para>Kilometers—The unit is kilometers.</para>
            /// <para>千米 - 单位为千米。</para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("KILOMETERS")]
            _KILOMETERS,

            /// <summary>
            /// <para>Meters</para>
            /// <para>Meters—The unit is meters. This is the default.</para>
            /// <para>米 - 单位为米。这是默认设置。</para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("METERS")]
            _METERS,

            /// <summary>
            /// <para>Decimeters</para>
            /// <para>Decimeters—The unit is decimeters.</para>
            /// <para>分米 - 单位为分米。</para>
            /// </summary>
            [Description("Decimeters")]
            [GPEnumValue("DECIMETERS")]
            _DECIMETERS,

            /// <summary>
            /// <para>Centimeters</para>
            /// <para>Centimeters—The unit is centimeters.</para>
            /// <para>厘米—单位为厘米。</para>
            /// </summary>
            [Description("Centimeters")]
            [GPEnumValue("CENTIMETERS")]
            _CENTIMETERS,

            /// <summary>
            /// <para>Millimeters</para>
            /// <para>Millimeters—The unit is millimeters.</para>
            /// <para>毫米—单位为毫米。</para>
            /// </summary>
            [Description("Millimeters")]
            [GPEnumValue("MILLIMETERS")]
            _MILLIMETERS,

            /// <summary>
            /// <para>Nautical miles</para>
            /// <para>Nautical miles—The unit is nautical miles.</para>
            /// <para>海里 - 单位为海里。</para>
            /// </summary>
            [Description("Nautical miles")]
            [GPEnumValue("NAUTICAL_MILES")]
            _NAUTICAL_MILES,

            /// <summary>
            /// <para>Miles</para>
            /// <para>Miles—The unit is miles.</para>
            /// <para>英里—单位为英里。</para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("MILES")]
            _MILES,

            /// <summary>
            /// <para>Yards</para>
            /// <para>Yards—The unit is yards.</para>
            /// <para>码 - 单位为码。</para>
            /// </summary>
            [Description("Yards")]
            [GPEnumValue("YARDS")]
            _YARDS,

            /// <summary>
            /// <para>Feet</para>
            /// <para>Feet—The unit is feet.</para>
            /// <para>英尺 - 单位为英尺。</para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("FEET")]
            _FEET,

            /// <summary>
            /// <para>Inches</para>
            /// <para>Inches—The unit is inches</para>
            /// <para>英寸 - 单位为英寸</para>
            /// </summary>
            [Description("Inches")]
            [GPEnumValue("INCHES")]
            _INCHES,

            /// <summary>
            /// <para>Decimal degrees</para>
            /// <para>Decimal degrees—The unit is decimal degrees.</para>
            /// <para>十进制度 - 单位为十进制度。</para>
            /// </summary>
            [Description("Decimal degrees")]
            [GPEnumValue("DECIMAL_DEGREES")]
            _DECIMAL_DEGREES,

            /// <summary>
            /// <para>Points</para>
            /// <para>Points—The unit is points.</para>
            /// <para>点数 - 单位为点数。</para>
            /// </summary>
            [Description("Points")]
            [GPEnumValue("POINTS")]
            _POINTS,

            /// <summary>
            /// <para>Unknown</para>
            /// <para>Unknown—The unit is unknown.</para>
            /// <para>未知 - 单位未知。</para>
            /// </summary>
            [Description("Unknown")]
            [GPEnumValue("UNKNOWN")]
            _UNKNOWN,

        }

        public GenerateOISObstacleData SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}